# -*- coding: utf-8 -*-
import math

from flask import jsonify, render_template, g


# 对render_template进行封装，传入的template是html文件，context是一个参数字典
def ops_render(template, context={}):
    # 如果发现当前用户在全局变量g里，就在context这个参数字典里面添加一个当前的用户，然后调用render_template进行渲染
    if 'current_user' in g:
        context['current_user'] = g.current_user
    return render_template(template, **context)


# 如操作成功，则返回如下的json字符串
def ops_renderJSON(code=200, msg="操作成功~~", data={}):
    resp = {"code": code, "msg": msg, "data": data}
    return jsonify(resp)


# 如操作失败，则返回如下的json字符串
def ops_renderErrJSON(msg="系统繁忙，请稍后再试~~", data={}):
    return ops_renderJSON(code=-1, msg=msg, data=data)


# 专门用来处理分页的函数，接受后端传来的关于页面的参数
def iPagenation(params):
    total_count = int(params['total_count'])
    page_size = int(params['page_size'])
    page = int(params['page'])
    # 计算总共有多少页，电影总数目/每页的电影数 向上取整
    total_pages = math.ceil(total_count / page_size)
    # 如果出现总数0的现象，那么分页也为0了，所以要保证至少为1
    total_pages = total_pages if total_pages > 0 else 1
    # 判断这个页面有没有前一页，小于等于1 没有，否则就有
    is_prev = 0 if page <= 1 else 1
    # 判断这个页面有没有后一页，大于等于最大的页数 没有，否则有
    is_next = 0 if page >= total_pages else 1
    # 完善关于分页的参数，传到后端
    pages = {
        'current': page,
        'total_pages': total_pages,
        'total': total_count,
        'page_size': page_size,
        'is_next': is_next,
        'is_prev': is_prev,
        'range': range(1, total_pages + 1),
        'url': params['url']
    }

    return pages
